home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Programming / AmigaTalk / general / Integer.st < prev    next >
Text File  |  2000-02-20  |  3KB  |  126 lines

  1. Class Integer :Number
  2. [
  3.    = aNumber
  4.       ^ <primitive 6 self aNumber>
  5.          ifTrue:  [ <primitive 16 self aNumber> ]
  6.          ifFalse: [ super = aNumber ]
  7. |
  8.    > aNumber
  9.       ^ <primitive 6 self aNumber>
  10.          ifTrue:  [ <primitive 13 self aNumber> ]
  11.          ifFalse: [ super > aNumber ]
  12. |
  13.    < aNumber
  14.       ^ <primitive 6 self aNumber>
  15.          ifTrue:  [ <primitive 12 self aNumber> ]
  16.          ifFalse: [ super < aNumber ]
  17. |
  18.    + aNumber
  19.       ^ <primitive 6 self aNumber>
  20.          ifTrue:  [ <primitive 10 self aNumber> ]
  21.          ifFalse: [ super + aNumber ]
  22. |
  23.    - aNumber
  24.       ^ <primitive 6 self aNumber>
  25.          ifTrue:  [<primitive 11 self aNumber>]
  26.          ifFalse: [ super - aNumber ]
  27. |
  28.    * aNumber
  29.       ^ <primitive 6 self aNumber>
  30.          ifTrue:  [<primitive 18 self aNumber>]
  31.          ifFalse: [ super * aNumber ]
  32. |
  33.    / aNumber
  34.       ^ self asFloat / aNumber
  35. |
  36.    allMask: anInteger
  37.       ^ anInteger = <primitive 23 self anInteger>
  38. |
  39.    anyMask: anInteger
  40.       ^ 0 ~= <primitive 23 self anInteger>
  41. |
  42.    asCharacter
  43.       ^ <primitive 36 self>
  44. |
  45.    asFloat
  46.       ^ <primitive 39 self >
  47. |
  48.    asString
  49.       ^ <primitive 37 self>
  50. |
  51.    bitAnd: anInteger
  52.       ^ <primitive 23 self anInteger>
  53. |
  54.    bitAt: anInteger
  55.       ^ <primitive 21 self anInteger>
  56. |
  57.    bitInvert
  58.       ^ <primitive 33 self>
  59. |
  60.    bitOr: anInteger
  61.       ^ <primitive 22 self anInteger>
  62. |
  63.    bitShift: anInteger
  64.       ^ <primitive 25 self anInteger>
  65. |
  66.    bitXor: anInteger
  67.       ^ <primitive 24 self anInteger>
  68. |
  69.    even
  70.       ^ (self rem: 2) = 0
  71. |
  72.    factorial
  73.       ^ <primitive 38 self>
  74. |
  75.    gcd: anInteger
  76.       ^ <primitive 6 self anInteger>
  77.          ifTrue:  [<primitive 20 self anInteger>]
  78.          ifFalse: [self opError]
  79. |
  80.    highBit
  81.       ^ <primitive 34 self>
  82. |
  83.    lcm: anInteger
  84.       ^ <primitive 6 self anInteger>
  85.          ifTrue:  [self * anInteger quo: (self gcd: anInteger)]
  86.          ifFalse: [self opError]
  87. |
  88.    noMask: anInteger
  89.       ^ 0 = (self bitAnd: anInteger)
  90. |
  91.    odd
  92.       ^ (self rem: 2) ~= 0
  93. |
  94.    quo: anInteger
  95.       ^ <primitive 6 self anInteger>
  96.          ifTrue:  [<primitive 28 self anInteger>]
  97.          ifFalse: [self opError]
  98. |
  99.    // aNumber                        "see quo also"
  100.       ^ <primitive 6 self aNumber>
  101.          ifTrue:  [<primitive 19 self aNumber>]
  102.          ifFalse: [self opError]
  103. |
  104.    radix: aNumber
  105.       ^ <primitive 26 self aNumber>
  106. |
  107.    rem: anInteger
  108.       ^ <primitive 6 self anInteger>
  109.          ifTrue:  [<primitive 29 self anInteger>]
  110.          ifFalse: [self opError]
  111. |
  112.    intNegRem: aNumber ! i !                  "Used to be \\"
  113.       ^ <primitive 6 self aNumber>
  114.          ifTrue:  [i <- self * ( (self < 0)
  115.                                   ifTrue: [ -1 ] 
  116.                                  ifFalse: [  1 ] ).
  117.            
  118.                    i rem: aNumber]
  119.  
  120.         ifFalse:  [self opError]
  121. |
  122.    timesRepeat: aBlock ! i !
  123.       i <- 0.
  124.       [i < self] whileTrue: [aBlock value. i <- i + 1]
  125. ]
  126.